package persistencia;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;

import negocio.Alumno;
import negocio.Cursada;
import negocio.Inscripcion;

public class InscripcionDAO
{
	private Connection c;
	private static InscripcionDAO instancia;
	
	private InscripcionDAO()
	{
		c = BDManager.getInstance().getConexion();
	}
	
	public static InscripcionDAO getInstance()
	{
		if(instancia == null)
			instancia = new InscripcionDAO();
		return instancia;
	}
	
	public void guardar(Inscripcion inscripcion)
	{
		String query = String.format("INSERT INTO inscripcion(estado, alumno_fk, cursada_fk) VALUES ('" 
				       + inscripcion.getEstado() + "', '" + inscripcion.getAlumno().getDni() + "', " +inscripcion.getCursada().getId() + ");");
 
		try {
			Statement s = c.createStatement();
			s.execute(query);
			s.close();
		} catch (SQLException e) 
		{
			e.printStackTrace();
		}
	}
	
	public ArrayList<Inscripcion> getAll()
	{
		String query = "SELECT * FROM inscripcion";
		Statement s;
		ResultSet rs;
		ArrayList<Inscripcion> res = new ArrayList<Inscripcion>();
		try {
			s = c.createStatement();
			rs = s.executeQuery(query);
			while(rs.next())
			{
				Alumno alumno = AlumnoDAO.getInstance().getAlumno(rs.getString("alumno_fk"));
				Cursada cursada = CursadaDAO.getInstance().getCursada(rs.getInt("cursada_fk"));
				res.add(new Inscripcion(alumno, cursada, rs.getString("estado")));
			}
			s.close();
			
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return res;
	}
	
	public ArrayList<Inscripcion> getInscriptos(Cursada cursada)
	{
		String query = "SELECT * FROM inscripcion WHERE cursada_fk =" + cursada.getId();
		ArrayList<Inscripcion> res = new ArrayList<Inscripcion>();
		try {
			Statement s = c.createStatement();
			ResultSet rs = s.executeQuery(query);
			while(rs.next())
			{
				Alumno alumno = AlumnoDAO.getInstance().getAlumno(rs.getString("alumno_fk"));
				res.add(new Inscripcion(alumno, cursada, rs.getString("estado")));
			}
			
		} catch (SQLException e) 
		{
			e.printStackTrace();
		}
		return res;
	}
	
	public void borrar(Inscripcion inscripcion)
	{
		String query = "DELETE * FROM inscripcion WHERE alumno_fk = '" + inscripcion.getAlumno().getDni()+"'";
		Statement s;
		try {
			s = c.createStatement();
			s.execute(query);
			s.close();
		} catch (SQLException e) 
		{
			e.printStackTrace();
		}
	}
	
	
	
	
	
	
	
	
	
	
	
}